package dao;

import java.util.Iterator;
import java.util.List;


import exception.BlogDaoException;

import model.Message;
import model.ReplyMessage;
import model.User;

public class MessageDao extends HibernateDao{
	public void saveMessage(Message message){
		super.saveObject(message);
	}
	
	
	/**
	 * 返回所有留言的信息
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List<Message> getMessages(){
		String hql="from Message";
		return (List<Message>) super.getObjects(hql);
	}
	/**
	 * 删除留言信息
	 * @param id 留言信息的id
	 * @param userId 执行删除操作用户的id
	 */
	public void deleteMessage(String id,String userId){
		User user=getObject(User.class, userId);
		if(user==null){
			throw new BlogDaoException("没有该用户");
		}
		
		Message m=null;
		Iterator<Message> it=user.getMessages().iterator();
		while(it.hasNext()){
			Message message=(Message)it.next();
			if(message.getId().equals(id)){
				m=message;
			}
		}
		
		if(m!=null){
			deleteObject(m);
			user.getMessages().remove(m);
		}else{
			throw new BlogDaoException("不能找到留言   ");
		}
	}
	
	/**
	 * 获取留言根据id
	 * @param id
	 * @return
	 */
	public Message getMessage(String id){
		return getObject(Message.class, id);
	}
	
	public void updateMessage(Message message){
		updateObject(message);
	}
	/**
	 *删除日志的评论
	 *
	 * @param id 评论的id
	 * @param userId 删除的用户
	 */
	public void deleteReplyMessage(String id,String userId){
		ReplyMessage reply=getObject(ReplyMessage.class,id);
		if(reply==null){
			throw new BlogDaoException("找不到你所要删除的日志");
		}
		
		Message message=reply.getMessage();
		Iterator<ReplyMessage> it=message.getReplies().iterator();
		while(it.hasNext()){
			ReplyMessage r=it.next();
			if(r.getId().equals(id)){
				message.getReplies().remove(r);
			}
		}
	}
	
}
